//this class suport interface that a concrete mutex should implement
//andycai_sc 2011-04-28

#ifndef GMUTEXIMPL_H
#define GMUTEXIMPL_H

class GMutexImpl
{
public:
	virtual ~GMutexImpl() {}

	virtual void lockImpl() = 0;

	virtual void unlockImpl() = 0;

protected:
	GMutexImpl() {}
};

class GMutexImplCreator
{
public:
	static GMutexImpl* create();
};

GMutexImpl* createMutexFromStl();
GMutexImpl* createMutexFromBoost();
GMutexImpl* createMutexFromPoco();
GMutexImpl* createMutexFromAce();
GMutexImpl* createMutexFromQt();
GMutexImpl* createMutexFromGToy();

#endif
